
# i.	定义了一个学生类：属性:学号，姓名，年龄，性别，身高，体重，成绩，家庭地址，电话号码。
# 行为：学习（要求参数传入学习的时间），玩游戏（要求参数传入游戏名），
# 编程（要求参数传入写代码的行数），数的求和（要求参数用变长参数来做，返回求和结果）

class Student:
    def __init__(self,sno,name,age,sex,height,weight,score,adr,phone):
        self.sno = sno
        self.name = name
        self.age = age
        self.sex = sex
        self.height = height
        self.weight = weight
        self.score = score
        self.adr = adr
        self.phone = phone

    def study(self,time):
        print(f"{self.name}学习了{time}小时")

    def playGame(self,game_name):
        print(f"{self.name}玩{game_name}游戏")

    def code(self,lines):
        print(f"{self.name}写了{lines}行代码")

    def sumNumber(self,*args):
        return sum(*args)

# ii.	车类：属性：车型号，车轮数，车身颜色，车重量，油箱存储大小 。
# 功能：跑（要求参数传入车的具体功能，比如越野，赛车）
# 创建：法拉利，宝马，铃木，五菱，拖拉机对象

class Car:
    def __init__(self,type,wheel_num,color,weight,tank):
        self.type = type
        self.wheel_num = wheel_num
        self.color = color
        self.weight = weight
        self.tank = tank

    def run(self,func):
        print(f"{self.type}的功能为{func}")

ferrari = Car("法拉利", 4, "红色", 1400, 90)
bmw = Car("宝马", 4, "黑色", 1600, 70)
suzuki = Car("铃木", 4, "白色", 1100, 45)
wuling = Car("五菱", 4, "银色", 1200, 50)
tractor = Car("拖拉机", 4, "绿色", 2000, 60)
ferrari.run("越野")

# iii.	笔记本：属性：型号，待机时间，颜色，重量，cpu型号，内存大小，硬盘大小。
# 行为：打游戏（传入游戏的名称）,办公。

class NoteBook:
    def __init__(self,model,standby_time,color,weight,cpu_model,memory,disk):
        self.model = model
        self.standby_time = standby_time
        self.color = color
        self.weight = weight
        self.cpu_model = cpu_model
        self.memory = memory
        self.disk = disk

    def play_game(self,game_name):
        print(f"{self.model}电脑可以玩{game_name}")

    def office(self):
        print(f"{self.model}可以办公")

# iv.	猴子类：属性：类别，性别，身体颜色，体重。行为：造火（要求传入造火的材料：比如木棍还是石头），
# 学习事物（要求参数传入学习的具体事物，可以不止学习一种事物）

class Monkey:
    def __init__(self,type,sex,body_color,weight):
        self.type = type
        self.sex = sex
        self.body_color = body_color
        self.weight = weight

    def makeFire(self,material):
        print(f"{self.type}猴子在用{material}生火")

    def learnObject(self,*object):
        print(f"{self.type}猴子正在学习{object}")




# 人类：
# 属性:
# 姓名，性别，年龄，所拥有的手机剩余话费，手机品牌，手机电池容量，手机屏幕大小，手机最大待机时长，所拥有的积分。
# 功能：
# 发短信（要求参数传入短信内容）。
# 打电话（要求传入要打的电话号码和要打的时间长度。
# 程序里判断号码是否为空或者本人的话费是否小于1元，
# 若为空或者小于1元则报相对应的错误信息，否则的话拨通。
# 结束后，按照时间长度扣费并返回扣费并且按照分钟给手机卡累加积分
# （0~10分钟：1元/钟、15个积分/钟，10~20分钟：0.8元/钟、39个积分/钟，
# 其他：0.65元/钟、48个积分/钟））

class Person:
    def __init__(self,name,sex,age,phone_balance,phone_brand,battery_capacity,screen,standby_time,points):
        self.name = name
        self.sex = sex
        self.age = age
        self.phone_ballance = phone_balance
        self.phone_brand = phone_brand
        self.battery_capacity = battery_capacity
        self.screen = screen
        self.standby_time = standby_time
        self.points = points

    def sendSession(self,content):
        print(f"{self.name}要发送的短信内容为{content}")

    def call(self,phoneNumber,timeLen):
        cost = 0
        add_points = 0
        if phoneNumber is None:
            print("手机号不支持为空")
        elif self.phone_ballance < 1:
            print("话费余额不足")
        else:
            print("正常拨通")
        if 0 < timeLen <= 10:
            cost += 1 * timeLen
            add_points += 15 * timeLen
        elif 10 < timeLen <= 20:
            cost += 0.8 * timeLen
            add_points += 39 * timeLen
        else:
            cost += 0.65 * timeLen
            add_points += 48 * timeLen
        return cost,add_points

people = Person("jack","男",21,9,"华为",80,"12英寸",12,200)
x = people.call("19833664455",40)
print(x)





